HandStack 개발 과정 돌아보기

백엔드 보안의 기초와 좋은 코드 습관

QCN

백엔드 보안의 첫걸음: 인증과 인가

  • 목표: 웹 애플리케이션 보안의 가장 기본적인 개념인 인증(Authentication)과 인가(Authorization)의 필요성을 이해하고, 다음 달 학습 내용을 미리 준비합니다.
QCN

1. 인증 (Authentication) 이란?

  • '누구인지' 신원을 확인하는 과정입니다.
  • 가장 대표적인 예는 로그인 입니다.

마치 건물에 들어갈 때 출입증이나 신분증을 보여주는 것과 같아요.
"제가 바로 OOO 입니다." 라고 증명하는 단계죠.

  • 예시
    • 아이디/비밀번호 입력
    • 지문, 얼굴 인식
    • 일회용 비밀번호(OTP)
QCN

2. 인가 (Authorization) 란?

  • '무엇을 할 수 있는지' 권한을 확인하고 부여하는 과정입니다.
  • 인증을 통과한 사용자가 특정 자원이나 기능에 접근할 수 있는지 결정합니다.

출입증을 보여주고 건물에 들어왔더라도, 모든 사무실에 들어갈 수는 없죠.
본인에게 허가된 곳만 들어갈 수 있는 것, 이것이 바로 인가입니다.

  • 예시
    • 관리자는 게시물을 삭제할 수 있지만, 일반 사용자는 불가능합니다.
    • 유료 회원은 특별 영상을 볼 수 있지만, 무료 회원은 불가능합니다.
QCN

인증과 인가는 왜 필요할까요?

  • 사용자 정보 보호

    • 허가되지 않은 사람이 나의 개인정보나 글을 볼 수 없도록 보호합니다.
  • 데이터 무결성 유지

    • 권한 없는 사용자가 중요한 데이터를 함부로 수정하거나 삭제하는 것을 막습니다.
  • 악의적인 접근 방지

    • 해커나 악성 봇으로부터 우리의 소중한 시스템을 안전하게 지킵니다.

"인증은 신분증 검사, 인가는 입장권 검사라고 생각하면 쉬워요. 백엔드에서 이 두 가지를 잘 관리해야 우리 앱이 안전하게 운영될 수 있죠!"

QCN

HandStack에서의 인증/인가 (미리보기)

  • 현재까지 우리가 만든 API는 기본적으로 공개(인증 불필요) 상태입니다.

  • 즉, URL만 알면 누구나 데이터를 요청할 수 있습니다.

  • 다음 달에는 HandStack을 이용하여 강력한 보안 기능을 추가할 것입니다.

    • 토큰 기반 인증 (JWT)
    • 역할 기반 인가 (Role-Based Authorization)
QCN

핸즈온: 보안 감각 키우기 (코드 실습 없음)

  • 잠시 시간을 내어 '개인정보 유출', '해킹 사례' 등 보안 관련 뉴스 기사나 영상을 검색해 보세요.

  • 우리가 왜 코드를 통해 보안을 신경 써야 하는지 더욱 현실적으로 와닿을 것입니다.

  • 개발자에게 보안은 선택이 아닌 필수입니다.

QCN

2개월간의 여정 돌아보기

  • 이제까지 배운 백엔드 개발 흐름을 정리하고, 더 좋은 개발자가 되기 위한 길을 함께 살펴봅니다.
QCN

좋은 백엔드 코드란 무엇일까?

  • 목표: 2개월간 배운 백엔드 개발 과정을 되짚어보고, 효율적인 백엔드 코드 작성과 아키텍처의 중요성을 간략히 맛봅니다.
QCN

다시보는 계층형 아키텍처

  • 우리는 HandStack을 사용하며 자연스럽게 계층을 나누어 개발해왔습니다.

    • Controller (요청 처리 및 응답)
    • Service/Business Logic (핵심 비즈니스 규칙 처리)
    • Repository/Model (데이터베이스와의 소통)
  • 왜 역할을 나눌까요?

    • 코드를 이해하기 쉽고, 각자 맡은 역할에 집중할 수 있습니다.
    • 기능 변경 시 수정할 부분을 찾기 쉽고, 유지보수와 테스트가 용이해집니다.
QCN

클린 코드 맛보기

  • 클린 코드란, 동료 개발자가 읽고 이해하기 쉬운 코드입니다.

  • 코드는 한번 작성하고 끝나는 것이 아니라, 계속 읽히고 수정됩니다.

  • 간단한 원칙

    • 의미 있는 이름 짓기: 변수/함수 이름만 봐도 역할을 알 수 있게
      (예: a (X) -> articleCount (O))

    • 하나의 함수는 하나의 일만: 여러 기능을 하는 함수는 작게 분리
      (예: GetArticleAndSendEmail() (X) -> GetArticle(), SendEmail() (O))

QCN

API 문서화의 중요성

  • 우리가 만든 API를 다른 사람(프론트엔드 개발자, 동료)은 어떻게 사용해야 할까요?

  • API 명세서(문서)는 협업과 소통을 위한 필수 도구입니다.

  • Swagger/OpenAPI 같은 도구를 사용하면 API를 자동으로 문서화할 수 있습니다.

  • HandStack은 이러한 도구와 쉽게 연동하여 문서 생성을 지원할 수 있습니다.

QCN

핸즈온: 내 코드 돌아보기

  • 지금까지 본인이 작성한 컨트롤러나 모델 파일을 다시 열어보세요.
  • 그리고 스스로에게 질문을 던져보세요.

"이 변수 이름은 더 좋은 이름이 없을까?"

"이 코드는 너무 긴데, 함수로 따로 빼면 더 깔끔하지 않을까?"

"한 달 뒤에 내가 이 코드를 다시 봐도 바로 이해할 수 있을까?"

  • 이렇게 고민하는 것부터가 좋은 개발자의 시작입니다.
QCN

HandStack이 좋은 습관을 만드는 이유

"HandStack은 기본적인 프로젝트 구조 자체가 모범적인 아키텍처를 따르도록 유도하기 때문에, 초보자도 자연스럽게 좋은 코드 습관을 익힐 수 있습니다."

  • HandStack CLI로 프로젝트를 생성하는 순간, 이미 잘 짜인 구조 위에서 개발을 시작하게 됩니다.
  • 이는 개발자가 비즈니스 로직에 더 집중하면서도, 좋은 설계의 이점을 누릴 수 있게 도와줍니다.
QCN

정리 및 다음 단계

  • 오늘 배운 것

      • 백엔드 보안의 핵심, 인증과 인가의 필요성
      • 좋은 코드를 위한 아키텍처와 클린 코드의 중요성
  • 다음 달 예고

      • HandStack을 이용한 실전 인증/인가 기능 구현
  • 지금까지 정말 수고 많으셨습니다.

  • 여러분은 이미 백엔드 개발의 중요한 기초를 성공적으로 다졌습니다!

QCN